functions.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { PageContainer } from 'ui-patterns/PageContainer'
  3. import {
  4. PageHeader,
  5. PageHeaderAside,
  6. PageHeaderMeta,
  7. PageHeaderSummary,
  8. PageHeaderTitle,
  9. } from 'ui-patterns/PageHeader'
  10. import { PageSection, PageSectionContent } from 'ui-patterns/PageSection'
  11. import { FunctionsList } from '@/components/interfaces/Database/Functions/FunctionsList/FunctionsList'
  12. import DatabaseLayout from '@/components/layouts/DatabaseLayout/DatabaseLayout'
  13. import { DefaultLayout } from '@/components/layouts/DefaultLayout'
  14. import { DocsButton } from '@/components/ui/DocsButton'
  15. import NoPermission from '@/components/ui/NoPermission'
  16. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  17. import { DOCS_URL } from '@/lib/constants'
  18. import type { NextPageWithLayout } from '@/types'
  19. const DatabaseFunctionsPage: NextPageWithLayout = () => {
  20. const { can: canReadFunctions, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  21. PermissionAction.TENANT_SQL_ADMIN_READ,
  22. 'functions'
  23. )
  24. if (isPermissionsLoaded && !canReadFunctions) {
  25. return <NoPermission isFullPage resourceText="view database functions" />
  26. }
  27. return (
  28. <>
  29. <PageHeader size="large">
  30. <PageHeaderMeta>
  31. <PageHeaderSummary>
  32. <PageHeaderTitle>Database Functions</PageHeaderTitle>
  33. </PageHeaderSummary>
  34. <PageHeaderAside>
  35. <DocsButton href={`${DOCS_URL}/guides/database/functions`} />
  36. </PageHeaderAside>
  37. </PageHeaderMeta>
  38. </PageHeader>
  39. <PageContainer size="large">
  40. <PageSection>
  41. <PageSectionContent>
  42. <FunctionsList />
  43. </PageSectionContent>
  44. </PageSection>
  45. </PageContainer>
  46. </>
  47. )
  48. }
  49. DatabaseFunctionsPage.getLayout = (page) => (
  50. <DefaultLayout>
  51. <DatabaseLayout title="Functions">{page}</DatabaseLayout>
  52. </DefaultLayout>
  53. )
  54. export default DatabaseFunctionsPage